﻿@* Quitar esta sección si se utilizan agrupaciones *@
@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
}
@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Consultar Ganador Elección.";

    if (!WebSecurity.IsAuthenticated)
    {
        Response.Redirect("../Account/login.cshtml");
    }

    if(Request.QueryString["id"] == null)
    {
        Response.Redirect("Consultar_RendiEmpresa.cshtml");
    }

    // Inicializar variables de página generales    
    var Cbo_eleccion = "";
    var Cbo_candidato = "";

    // Validación de la instalación
    Validation.RequireField("Cbo_candidato", "Debe seleccionar un candidato.");

    if (IsPost)
    {
        AntiForgery.Validate();
        Cbo_eleccion = Request.Form["Cbo_eleccion"];
        Cbo_candidato = Request.Form["Cbo_candidato"];


        if (Cbo_eleccion.IsEmpty() || Cbo_eleccion.ToString().Trim() == "0")
        {
            if (Session["Val_carga_eleccion"] != null && !Cbo_eleccion.Trim().IsEmpty())
            {
                Session["Val_carga_eleccion"] = null;
            }
            else
            {
                ModelState.AddError("Cbo_empresa", "Seleccione una empresa.");
            }
        }
        else
        {
            //Session["Val_carga_eleccion"] != null &&
            if (Session["Val_carga_eleccion"] != null && (Cbo_candidato.IsEmpty() || Cbo_candidato.ToString().Trim() == "0"))
            {
                ModelState.AddError("Cbo_candidato", "Seleccione un candidato");
            }

            if (Cbo_eleccion.ToString() != "0" && (Cbo_candidato.IsEmpty() || Cbo_candidato.ToString() == "0") && Session["Val_carga_eleccion"] == null)
            {
                //Cambiar la consulta para traer la info del candidato por el codigo de la eleccion.
                Candidato Obj_candidatos = new Candidato();
                Obj_candidatos.Objcandidatoreporte.TipoTran_vo = 1;
                Obj_candidatos.Objcandidatoreporte.id_candidato_vo = 0;
                Obj_candidatos.Objcandidatoreporte.id_eleccion_vo = int.Parse(Cbo_eleccion);
                var mylista_validadora = Obj_candidatos.consultar_candidato_x_eleccion(1);
                ModelState.AddError("Cbo_candidato", "Seleccione un candidato");
                if (mylista_validadora.Count > 0)
                {
                    if (Cbo_candidato.ToString() != "0" || !Cbo_candidato.IsEmpty())
                    {
                        ModelState.Remove("Cbo_candidato");
                    }
                }
                mylista_validadora = null;
            }
        }

        if (Cbo_eleccion.ToString() != "0" && Cbo_candidato.ToString() != "0" && Session["Val_carga_eleccion"] == null)
        {
            Session["Val_carga_eleccion"] = 1;
        }

        if (Validation.IsValid() && ModelState.IsValid && Session["Val_carga_eleccion"] != null)
        {
            Reporte Obj_reporte = new Reporte();
            Obj_reporte.Objrendimientocandidato.Id_eleccion = int.Parse(Cbo_eleccion.ToString());
            Obj_reporte.Objrendimientocandidato.Id_candidato = int.Parse(Cbo_candidato.ToString());
            
            var Lista_reporte = Obj_reporte.consultar_rendimiento_candidato(1);

            if (Lista_reporte.Count > 0)
            {
                List<Vo_reporte> Lista_val = new List<Vo_reporte>();

                foreach (var propiedad in Lista_reporte)
                {
                    Vo_reporte Obj_vo_reporte = new Vo_reporte();
                    Obj_vo_reporte.Candidto_vo = propiedad.nombre_candidato;
                    Obj_vo_reporte.Votos_vo = propiedad.votos;
                    Lista_val.Add(Obj_vo_reporte);
                }

                var myChart = new Chart(width: 600, height: 400)
                .AddTitle("Resultados Rendimiento Candidato")
                .AddSeries(name: "Eleccion", chartType: "Bar",
                           xValue: Lista_val,
                           xField: "Candidto_vo",
                           yValues: Lista_val,
                           yFields: "Votos_vo")
                .Write();
            }
            else
            {
                ModelState.AddFormError("No hay datos de la elección selecionada.");
            }
        }
    }
}
@if (!User.IsInRole("Admin") && !User.IsInRole("Candidato"))
{
    ModelState.AddError("errorGeneral", "El usuario: " + User.Identity.Name + " NO tiene permisos sobre este formulario.");
    @Html.ValidationMessage("errorGeneral")   
}
else
{
    if (Cbo_eleccion == string.Empty)
    {
        Cbo_eleccion = "-1";
    }            

    if (Request["Val"] != null)
    {
        Cbo_eleccion = Request["Val"].ToString();
    }
    
    <form id="form1" method="post" action="">
    @AntiForgery.GetHtml()
    @* Si existe al menos un error de validación, informar al usuario *@
    @Html.ValidationSummary("No hay votos para la elección. Inténtelo de nuevo.", excludeFieldErrors: true, htmlAttributes: null)
    @{
    Candidato Obj_candidatos = new Candidato();
    Obj_candidatos.Objeleccion.id_empresa = int.Parse(Request.QueryString["id"].ToString());
    Obj_candidatos.Objeleccion.estado = true;
    var lista_eleccion = Obj_candidatos.consul_ele(1);

    //Candidato Obj_candidatos = new Candidato();
    Obj_candidatos.Objcandidatoreporte.TipoTran_vo = 1;
    Obj_candidatos.Objcandidatoreporte.id_candidato_vo = 0;
    Obj_candidatos.Objcandidatoreporte.id_eleccion_vo = int.Parse(Cbo_eleccion);
    var mylista = Obj_candidatos.consultar_candidato_x_eleccion(1);    
    
    //Obj_candidatos.Objeleccion.id_empresa = int.Parse("0");
    //Obj_candidatos.Objeleccion.estado = true;
    //var mylista = Obj_candidatos.consul_ele(1);
    }
    <fieldset>
        <legend>Formulario de consulta rendimiento de candidato</legend>
        <ol>
            <li class="email">
                <label for="Cbo_eleccion" @if (!ModelState.IsValidField("Cbo_eleccion"))
                                         {<text> class="error-label" </text> }>
                    Elección</label>
                <select id="Cbo_eleccion" name="Cbo_eleccion" onchange="this.form.submit()" @Validation.For("Cbo_eleccion")>
                    <option value="0">Seleccione</option>
                    @foreach (var propiedad in lista_eleccion)
                    {
                        if (!IsPost && Request["Val"] == null)
                        {
                        <option value="@propiedad.id_eleccion">@propiedad.titulo</option>                                
                        }
                        else
                        {
                            if (Request["Cbo_eleccion"].ToString().Trim() == propiedad.id_eleccion.ToString().Trim())
                            {
                        <option value="@propiedad.id_eleccion " selected="selected">@propiedad.titulo</option>                                
                            }
                            else
                            {
                        <option value="@propiedad.id_eleccion ">@propiedad.titulo</option>                                
                            }
                        }
                    }
                </select>
                @Html.ValidationMessage("Cbo_eleccion")
            </li>
            <li class="email">
                <label for="Cbo_candidato" @if (!ModelState.IsValidField("Cbo_candidato"))
                                          {<text> class="error-label" </text> }>
                    Candidato</label>
                <select id="Cbo_candidato" name="Cbo_candidato" @Validation.For("Cbo_candidato")>
                    <option value="0">Seleccione</option>
                    @{ if (mylista.Count > 0 && (Cbo_eleccion.ToString() != "0" && Cbo_eleccion.ToString() != string.Empty))
                       {
                           Session["Val_carga_eleccion"] = 1;
                           foreach (var propiedad in mylista)
                           {
                               if (!IsPost)
                               {
                        <option value="@propiedad.id_candidato_vo">@propiedad.Candidato_vo</option>                                
                               }
                               else
                               {
                                   if (Request["Cbo_candidato"].ToString().Trim() == propiedad.id_candidato_vo.ToString().Trim())
                                   {
                        <option value="@propiedad.id_candidato_vo " selected="selected">@propiedad.Candidato_vo</option>                                
                                   }
                                   else
                                   {
                        <option value="@propiedad.id_candidato_vo ">@propiedad.Candidato_vo</option>                                
                                   }
                               }
                           }
                       }
                       else
                       {
                           Session["Val_carga_eleccion"] = null;
                       }
                    }
                </select>
                @Html.ValidationMessage("Cbo_candidato")
            </li>
        </ol>
        <input type="submit" value="Consultar" />
    </fieldset>
    </form>
}